home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / fdimg / oh!.2hd / OH!DEN_B.LZH / TOOLS / KEYWITCH / KW_S200.LZH / w04macro.mac < prev    next >
Text File  |  1995-03-20  |  2KB  |  94 lines

  1.     .ifndef    __w04macro_mac
  2. __w04macro_mac    equ    1
  3.  
  4.     .include    w01dos.mac
  5.     .include    w02iocs.mac
  6.     .include    w03const.mac
  7.  
  8. ********************************
  9. *マクロ定義
  10. *スーパーバイザーモードへ
  11. super    .macro
  12.     clr.l    -(sp)
  13.     DOS    _SUPER
  14.     move.l    d0,(sp)
  15.     .endm
  16.  
  17. *ユーザーモードへ
  18. user    .macro
  19.     DOS    _SUPER
  20.     addq.w    #4,sp
  21.     .endm
  22.  
  23. *割り込み禁止
  24. *  X68030でのスプリアス割り込みの発生を避けるため、設定の位置に注意する。
  25. *  srの割り込みレベル以外のビットを操作しないこと。
  26. di    .macro
  27.     move.w    sr,-(sp)
  28.     ori.w    #$0700,sr        *割り込み禁止
  29.     .endm
  30.  
  31. *割り込みレベルを復元
  32. *  X68030でのスプリアス割り込みの発生を避けるため、設定の位置に注意する。
  33. *  srの割り込みレベル以外のビットを操作しないこと。
  34. ei    .macro
  35.     move.w    (sp)+,sr
  36.     .endm
  37.  
  38. *キー入力割り込みを禁止する
  39. *  X68030でのスプリアス割り込みの発生を避けるため、設定の位置に注意する。
  40. di_key    .macro
  41.     subq.w    #2,sp
  42.     bclr.b    #4,IMRA            *キー入力割り込みマスククリア
  43.     sne.b    (sp)            *元の状態を記録
  44.     .endm
  45.  
  46. *キー入力割り込みマスクを復元する
  47. *  X68030でのスプリアス割り込みの発生を避けるため、設定の位置に注意する。
  48. ei_key    .macro
  49.     .local    skip
  50.     tst.w    (sp)+            *元の状態
  51.     bpl    skip            *クリアされていた
  52.     bset.b    #4,IMRA            *キー入力割り込みマスクセット
  53.     nop
  54. skip:
  55.     .endm
  56.  
  57. *キャッシュOFF
  58. cache_off    .macro
  59.     .local    not030
  60.     tst.b    MPUTYP.w
  61.     beq    not030            *68030ではない
  62.     moveq.l    #1,d1
  63.     IOCS    _SYS_STAT        *現在の状態を取得する
  64.     move.l    d0,-(sp)        *現在の状態
  65.     moveq.l    #$FC,d2
  66.     and.l    d0,d2
  67.     moveq.l    #4,d1
  68.     IOCS    _SYS_STAT        *命令とデータのキャッシュをOFF
  69. not030:
  70.     .endm
  71.  
  72. *キャッシュの状態を復元
  73. cache_on    .macro
  74.     .local    not030
  75.     tst.b    MPUTYP.w
  76.     beq    not030            *68030ではない
  77.     move.l    (sp)+,d2        *元の状態
  78.     moveq.l    #4,d1
  79.     IOCS    _SYS_STAT        *キャッシュの状態を復元する
  80. not030:
  81.     .endm
  82.  
  83. *キャッシュをフラッシュする
  84. cache_flush    .macro
  85.     .local    not030
  86.     tst.b    MPUTYP.w
  87.     beq    not030            *68030ではない
  88.     moveq.l    #3,d1
  89.     IOCS    _SYS_STAT        *キャッシュフラッシュ
  90. not030:
  91.     .endm
  92.  
  93.     .endif
  94.